package cn.dapeng.interview;

import java.util.concurrent.LinkedTransferQueue;

public class TransferQueue_T01 {

    /**
     * 消费者线程必须先启动
     * transfer() 只有消费者消费了之后，才会返回，否则处于阻塞状态
     *
     * @param args
     * @throws InterruptedException
     */
    public static void main(String[] args) throws InterruptedException {

        LinkedTransferQueue<String> queue = new LinkedTransferQueue<>();

        new Thread(() -> {
            try {
                for (; ; ) {
                    System.out.println(queue.take());
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }).start();

        queue.transfer("aaa");
        queue.transfer("bbb");
        //.put("ccc");

        // 如果消费者线程后启动，则main线程一直处于阻塞状态
//        new Thread(() -> {
//            try {
//                System.out.println(queue.take());
//            } catch (InterruptedException e) {
//                throw new RuntimeException(e);
//            }
//        }).start();

    }
}
